package van.planifolia.work1;

import van.planifolia.ListConstant;
import van.planifolia.People;

import java.util.stream.Stream;

/**
 * Created by Intellij IDEA<br>
 *
 * @author Planifolia.Van
 * @version 1.0
 * @date 2022/11/6 15:54
 */
public class Reduce {
    public static void main(String[] args) {
        // 规约操作，这个方法是用来实现统计规约的，比如我们要对一个集合中的所有信息进行运算操作，这时候就可以使用规约，它的语法规范是有
        // 一点点特别 lambda表达式的参数有两个 t1,t2其中第一次赋值时候会取两个值分别给t1 t2然后我们在计算完毕的时候他会吧返回
        //  值重新赋值给t1 然后在取下一个值给t2然后我们继续拿着之前运算的结果与新取到的值进行运算循环以此知道取到最后一个。所以
        // 这个规约操作比较适合进行和 积运算

        // 就像下面的操作我们吧所有人的年龄进行了累计操作并且重新放到了第一个人的身上
        Stream<People> stream = ListConstant.peoples.stream();
        System.out.println(
                stream.reduce((people, people2) -> {
                    people.setAge(people.getAge() + people2.getAge());
                    return people;
                }).get());
    }
}
